#include<iostream>
#include<string>
using namespace std;
class State;
class ICar
{
public:
	void SetState(State *pState);
};

class ICar;
class State
{
public:
	State(string name)
	{
		m_sName = name;
	}
	virtual ~State(){}
	void ChangeState(ICar *pCar)
	{
		pCar->SetState(this);
	}
private:
	string m_sName;
};

class Car
{
public:
	Car(State *pState)
	{
		m_pState = pState;
	}
	virtual ~Car(){}
	void SetState(State *pState)
	{
		m_pState = pState;
	}
	void Pull()
	{

	}
private:
	State *m_pState;
};
int mainnn()
{
	return 0;
}